home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / editors / emcs1858 / 1858b-d3.zoo / e-lisp / st / dos-mode.el < prev    next >
Encoding:
Text File  |  1992-07-09  |  2.1 KB  |  73 lines

  1. ; -*-Emacs-Lisp-*-
  2. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  3. ;
  4. ; File:         dos-mode.el
  5. ; RCS:          $Header: dos-mode.el,v 1.3 92/05/07 15:39:11 ange Exp $
  6. ; Description:  MSDOS minor mode for GNU Emacs
  7. ; Author:       Andy Norman, Hplabs
  8. ; Created:      Wed May  6 16:42:29 1992
  9. ; Modified:     Thu May  7 15:38:55 1992 (Ange) ange@anorman
  10. ; Language:     Emacs-Lisp
  11. ;
  12. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  13.  
  14. (provide 'dos-mode)
  15.  
  16. (defvar dos-mode-distance 200
  17.   "Number of characters to search for RETURN when looking for a DOS file.")
  18.  
  19. (defvar dos-mode nil
  20.   "This buffer is to be converted to/from DOS format when read/written.")
  21.  
  22. (make-variable-buffer-local 'dos-mode)
  23. (setq-default dos-mode nil)
  24.  
  25. (or (assq 'dos-mode minor-mode-alist)
  26.     (setq minor-mode-alist (cons '(dos-mode " DOS") minor-mode-alist)))
  27.  
  28. (defun dos-convert-buffer ()
  29.   "Converts the current buffer from DOS format to UNIX format."
  30.   (if (or dos-mode
  31.       (save-excursion
  32.         (goto-char (point-min))
  33.         (re-search-forward "\r\n"
  34.                    (min (point-max) dos-mode-distance)
  35.                    t)))
  36.       (progn
  37.     (let ((mod-p (buffer-modified-p))
  38.           (buffer-read-only nil))
  39.       (save-excursion
  40.         (goto-char (point-min))
  41.         (while (re-search-forward "\r" nil t)
  42.           (replace-match "")))
  43.       (set-buffer-modified-p mod-p)
  44.       (setq dos-mode t)))))
  45.  
  46. (defun dos-write-buffer ()
  47.   "Write the buffer as a DOS format buffer."
  48.   (if dos-mode
  49.       (save-excursion
  50.     (let ((buffer-read-only nil))
  51.       (goto-char (point-min))
  52.       (while (re-search-forward "\n" nil t)
  53.         (replace-match "\r\n"))
  54.       (unwind-protect
  55.           (write-region (point-min)
  56.                 (point-max)
  57.                 buffer-file-name
  58.                 nil
  59.                 t)
  60.         (dos-convert-buffer)))    ;convert back again!
  61.     t)))
  62.  
  63. (or (memq 'dos-write-buffer write-file-hooks)
  64.     (setq write-file-hooks
  65.       (append write-file-hooks
  66.           (list 'dos-write-buffer)))) ;stick it on the end
  67.  
  68. (or (memq 'dos-convert-buffer find-file-hooks)
  69.     (setq find-file-hooks
  70.       (append find-file-hooks
  71.           (list 'dos-convert-buffer))))
  72.  
  73.